// package关键字：声明当前类所在的包，用于组织和管理代码
// com.itheima.polymorphsm3：包名，通常采用公司域名反写+项目名的形式
package com.itheima.polymorphsm3;

// public：访问修饰符，表示这个类可以被其他任何类访问
// class：关键字，用于定义一个类
// Wolf：类名，采用驼峰命名法，首字母大写
// extends Animal：extends关键字表示继承Animal类
// Animal是父类，Wolf是子类，子类可以继承父类的属性和方法
public class Wolf extends Animal {
    // String：数据类型，表示字符串类型
    // name：变量名，用于存储狼的名字
    // "狼"：字符串字面量，为name变量赋值
    // 这个变量覆盖了父类Animal中的同名变量
    String name = "狼";

    // @Override：注解，表示下面的方法是重写父类的方法
    // 这个注解可以帮助编译器检查是否正确重写了父类方法
    @Override
    // public：访问修饰符
    // void：返回值类型，表示这个方法没有返回值
    // run()：方法名，与父类Animal中的方法名相同，表示重写
    // 方法重写：子类定义与父类同名、同参数列表的方法，以实现子类特有的功能
    public void run() {
        // System.out.println()：Java的输出语句，用于打印信息到控制台
        // "🐺跑的贼溜~~~"：要打印的字符串内容，包含表情符号
        System.out.println("🐺跑的贼溜~~~");
    } // run方法结束标记

    // public：访问修饰符
    // void：返回值类型
    // eatSheep()：方法名，这是Wolf类特有的方法
    // 子类可以添加父类没有的方法，这体现了子类的扩展能力
    public void eatSheep() {
        // System.out.println()：输出语句
        // "狼吃羊"：打印的字符串内容
        System.out.println("狼吃羊");
    } // eatSheep方法结束标记
} // Wolf类结束标记
